package me.sdevil507.org.service;

import me.sdevil507.org.dto.OrgAllotResourcesParamsDto;
import me.sdevil507.org.dto.OrgResourceParamsDto;
import me.sdevil507.org.po.OrgResourcePo;
import me.sdevil507.platform.po.PlatResourcePo;
import me.sdevil507.supports.jpa.PageParamsDTO;
import me.sdevil507.supports.jpa.SortParamsDTO;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 机构资源表[OrgResourceService]
 *
 * @author sdevil507
 * created on 2020-06-23 18:43:30
 */
public interface OrgResourceService {

    /**
     * 查询全部记录
     *
     * @return 记录列表
     */
    List<OrgResourcePo> readAll();


    /**
     * 获取所有授权模块
     *
     * @return 记录列表
     */
    List<PlatResourcePo> readOrgAllModule();

    /**
     * 分页获取记录
     *
     * @param searchParamsDto 查询DTO
     * @param pageParamsDto   分页DTO
     * @param sortParamsDto   排序DTO
     * @return 分页记录
     */
    Page<OrgResourcePo> readAllByPage(OrgResourceParamsDto searchParamsDto, PageParamsDTO pageParamsDto, SortParamsDTO sortParamsDto);

    /**
     * 创建记录
     *
     * @param dto 传输类
     */
    void create(OrgResourceParamsDto dto);

    /**
     * 更新记录
     *
     * @param dto 传输类
     */
    void update(OrgResourceParamsDto dto);

    /**
     * 删除记录
     *
     * @param dto 传输类
     */
    void delete(OrgResourceParamsDto dto);

    /**
     * 获取模块编码
     *
     * @param parentId 父级模块编码
     * @return 新模块编码
     */
    String getModuleCode(Long parentId);

    List<PlatResourcePo> readResourcesByOrgIdList(List<Long> orgIdList, Integer moduleClassify);

    void allotResourcesOfOrgIdList(OrgAllotResourcesParamsDto dto);

    List<OrgResourcePo> readAllWithBtnByModuleClassify(OrgResourceParamsDto dto);
}